package com.maibow.service.admin;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.maibow.dao.DaoSupport;
import com.maibow.entity.Page;
import com.maibow.entity.admin.SysOperator;
import com.maibow.util.PageData;

/**
 * 
 * 脉博网络后台管理系统
 * 包名：com.maibow.service.admin
 * 文件名：NewUserService.java
 * 作者: 吴比(Wubi)
 * 时间：2015年4月2日-上午10:21:01
 * Copyright@ 2015湖南脉博网络科技有限公司-版权所有
 *
 */
@Service("newuserService")
public class NewUserService {

    @Resource(name = "daoSupport")
    private DaoSupport dao;

    /**
     * 
     * querUserlistPageWithoutRole(用户列表包含角色)
     * (这里描述这个方法适用条件 – 可选)
     * 标记：@param page
     * 标记：@return
     * 标记：@throws Exception
     * 返回值：List<PageData>
     * 作者：吴比(Wubi)
     * 
     * @exception
     * @since 1.0.0
     */
    public List<PageData> querUserlistPageWithoutRole(Page page) throws Exception {
        return (List<PageData>) dao.findForList("NewUserMapper.querUserlistPageWithoutRole", page);
    }

    /**
     * 
     * querUserlistPageWithinRole(用户列表不包含角色)
     * (这里描述这个方法适用条件 – 可选)
     * 标记：@param page
     * 标记：@return
     * 标记：@throws Exception
     * 返回值：List<PageData>
     * 作者：吴比(Wubi)
     * 
     * @exception
     * @since 1.0.0
     */
    public List<PageData> querUserlistPageWithinRole(Page page) throws Exception {
        return (List<PageData>) dao.findForList("NewUserMapper.querUserlistPageWithinRole", page);
    }

    /**
     * 
     * querUserPageWithoutRolePageData(
     * 这里用一句话描述这个方法的作用)
     * (这里描述这个方法适用条件 – 可选)
     * 标记：@param pageData
     * 标记：@return
     * 标记：@throws Exception
     * 返回值：List<PageData>
     * 作者：吴比(Wubi)
     * 
     * @exception
     * @since 1.0.0
     */
    public List<PageData> querUserPageWithoutRolePageData(PageData pageData) throws Exception {
        return (List<PageData>) dao.findForList("NewUserMapper.querUserPageWithoutRolePageData", pageData);
    }

    /**
     * 
     * querUserlistWithinRolePageData(
     * 这里用一句话描述这个方法的作用)
     * (这里描述这个方法适用条件 – 可选)
     * 标记：@param pageData
     * 标记：@return
     * 标记：@throws Exception
     * 返回值：List<PageData>
     * 作者：吴比(Wubi)
     * 
     * @exception
     * @since 1.0.0
     */
    public List<PageData> querUserlistWithinRolePageData(PageData pageData) throws Exception {
        return (List<PageData>) dao.findForList("NewUserMapper.querUserlistWithinRolePageData", pageData);
    }

    /**
     * 
     * findByEmail(这里用一句话描述这个方法的作用)
     * (这里描述这个方法适用条件 – 可选)
     * 标记：@param pd
     * 标记：@return
     * 标记：@throws Exception
     * 返回值：PageData
     * 作者：吴比(Wubi)
     * 
     * @exception
     * @since 1.0.0
     */
    public PageData findByEmail(PageData pageData) throws Exception {
        return (PageData) dao.findForObject("NewUserMapper.findByEmail", pageData);
    }

    /**
     * 
     * findByUsername通过loginname获取数据
     * (这里描述这个方法适用条件 – 可选)
     * 标记：@param pd
     * 标记：@return
     * 标记：@throws Exception
     * 返回值：PageData
     * 作者：吴比(Wubi)
     * 
     * @exception
     * @since 1.0.0
     */
    public PageData findByUsername(PageData pageData) throws Exception {
        return (PageData) dao.findForObject("NewUserMapper.findByUsername", pageData);
    }

    /**
     * 
     * saveUser(保存用户)
     * (这里描述这个方法适用条件 – 可选)
     * 标记：@param pageData
     * 标记：@throws Exception
     * 返回值：void
     * 作者：吴比(Wubi)
     * 
     * @exception
     * @since 1.0.0
     */
    public void saveUser(PageData pageData) throws Exception {
        dao.save("NewUserMapper.saveUser", pageData);
        saveUserRole(pageData);
    }

    /**
     * 
     * findMaxOperId(这里用一句话描述这个方法的作用)
     * (这里描述这个方法适用条件 – 可选)
     * 标记：@param pageData
     * 标记：@return
     * 标记：@throws Exception
     * 返回值：PageData
     * 作者：吴比(Wubi)
     * 
     * @exception
     * @since 1.0.0
     */
    public PageData findMaxOperId(PageData pageData) throws Exception {
        return (PageData) dao.findForObject("NewUserMapper.findMaxOperId", pageData);
    }

    /**
     * 
     * findByOperId(这里用一句话描述这个方法的作用)
     * (这里描述这个方法适用条件 – 可选)
     * 标记：@param pd
     * 标记：@return
     * 标记：@throws Exception
     * 返回值：PageData
     * 作者：吴比(Wubi)
     * 
     * @exception
     * @since 1.0.0
     */
    public PageData findByOperId(PageData pageData) throws Exception {
        return (PageData) dao.findForObject("NewUserMapper.findByOperId", pageData);
    }

    /**
     * 
     * editUser(这里用一句话描述这个方法的作用)
     * (这里描述这个方法适用条件 – 可选)
     * 标记：@param pageData
     * 标记：@throws Exception
     * 返回值：void
     * 作者：吴比(Wubi)
     * 
     * @exception
     * @since 1.0.0
     */
    public void editUser(PageData pageData) throws Exception {
        dao.update("NewUserMapper.editUser", pageData);
        pageData.put("roleid", Integer.valueOf(pageData.get("roleid").toString()));
        editUserRole(pageData);
    }

    /**
     * editUserRole(这里用一句话描述这个方法的作用)
     * (这里描述这个方法适用条件 – 可选)
     * 标记：@param pageData
     * 返回值：void
     * 作者：吴比(Wubi)
     * 
     * @throws Exception
     * @exception
     * @since 1.0.0
     */
    private void editUserRole(PageData pageData) throws Exception {
        // TODO Auto-generated method stub
        dao.update("NewUserMapper.editUserRole", pageData);
    }

    /**
     * 
     * editUserPassword(这里用一句话描述这个方法的作用)
     * (这里描述这个方法适用条件 – 可选)
     * 标记：@param pageData
     * 标记：@throws Exception 
     * 返回值：void
     * 作者：吴比(Wubi)
     * @exception 
     * @since  1.0.0
     */
    public void editUserPassword(PageData pageData) throws Exception {
        dao.update("NewUserMapper.editUserPassword", pageData);
    }
    
    /**
     * 删除用户
     * deleteUser(这里用一句话描述这个方法的作用)
     * (这里描述这个方法适用条件 – 可选)
     * 标记：@param pageData
     * 标记：@throws Exception
     * 返回值：void
     * 作者：吴比(Wubi)
     * 
     * @exception
     * @since 1.0.0
     */
    public void deleteUser(PageData pageData) throws Exception {
        dao.delete("NewUserMapper.deleteUser", pageData);
        deleteUserRole(pageData);
    }

    /**
     * 批量删除用户
     * deleteAllUser(这里用一句话描述这个方法的作用)
     * (这里描述这个方法适用条件 – 可选)
     * 标记：@param operids
     * 标记：@throws Exception
     * 返回值：void
     * 作者：吴比(Wubi)
     * 
     * @exception
     * @since 1.0.0
     */
    public void deleteAllUser(Number[] operids) throws Exception {
        dao.delete("NewUserMapper.deleteAllUser", operids);

        deleteAllUserRole(operids);
    }

    /**
     * deleteAllUserRole(这里用一句话描述这个方法的作用)
     * (这里描述这个方法适用条件 – 可选)
     * 标记：@param operids
     * 返回值：void
     * 作者：吴比(Wubi)
     * 
     * @throws Exception
     * @exception
     * @since 1.0.0
     */
    private void deleteAllUserRole(Number[] operids) throws Exception {
        dao.delete("NewUserMapper.deleteAllUserRole", operids);
    }

    /**
     * 
     * saveUserRole(这里用一句话描述这个方法的作用)
     * (这里描述这个方法适用条件 – 可选)
     * 标记：@param pageData
     * 标记：@throws Exception
     * 返回值：void
     * 作者：吴比(Wubi)
     * 
     * @exception
     * @since 1.0.0
     */
    public void saveUserRole(PageData pageData) throws Exception {
        dao.save("NewUserMapper.saveUserRole", pageData);
    }

    /**
     * 
     * deleteUserRole(这里用一句话描述这个方法的作用)
     * (这里描述这个方法适用条件 – 可选)
     * 标记：@param pageData
     * 标记：@throws Exception
     * 返回值：void
     * 作者：吴比(Wubi)
     * 
     * @exception
     * @since 1.0.0
     */
    public void deleteUserRole(PageData pageData) throws Exception {
        dao.delete("NewUserMapper.deleteUserRole", pageData);
    }

    /**
     * 
     * getOperatorByUsernameAndPassword(
     * 这里用一句话描述这个方法的作用)
     * (这里描述这个方法适用条件 – 可选)
     * 标记：@param pd
     * 标记：@return
     * 标记：@throws Exception
     * 返回值：PageData
     * 作者：吴比(Wubi)
     * 
     * @exception
     * @since 1.0.0
     */
    public PageData getOperatorByUsernameAndPassword(PageData pageData) throws Exception {
        return (PageData) dao.findForObject("NewUserMapper.getOperatorInfo", pageData);
    }

    /**
     * 
     * updateLastLoginTime更新登录时间
     * (这里描述这个方法适用条件 – 可选)
     * 标记：@param pageData
     * 标记：@throws Exception
     * 返回值：void
     * 作者：吴比(Wubi)
     * 
     * @exception
     * @since 1.0.0
     */
    public void updateLastLoginTime(PageData pageData) throws Exception {
        dao.update("NewUserMapper.updateLastLoginTime", pageData);
    }

    /**
     * 
     * getUserAndRoleById通过id获取数据
     * (这里描述这个方法适用条件 – 可选)
     * 标记：@param operid
     * 标记：@return
     * 标记：@throws Exception
     * 返回值：List<SysOperator>
     * 作者：吴比(Wubi)
     * 
     * @exception
     * @since 1.0.0
     */
    public List<SysOperator> getUserAndRoleById(Integer operid) throws Exception {
        PageData pageData = new PageData();
        pageData.put("operid", operid);
        return (List<SysOperator>) dao.findForList("NewUserMapper.getUserAndRoleById", pageData);
    }

    /**
     * 保存用户IP
     * saveLoginIP(这里用一句话描述这个方法的作用)
     * (这里描述这个方法适用条件 – 可选)
     * 标记：@param pageData
     * 标记：@throws Exception
     * 返回值：void
     * 作者：吴比(Wubi)
     * 
     * @exception
     * @since 1.0.0
     */
    public void saveLoginIP(PageData pageData) throws Exception {
        dao.update("NewUserMapper.saveLoginIP", pageData);
    }

    /**
     * 
     * findOperatorByOperatorName(这里用一句话描述这个方法的作用)
     * (这里描述这个方法适用条件 – 可选)
     * 标记：@param pageData
     * 标记：@return
     * 标记：@throws Exception
     * 返回值：PageData
     * 作者：吴比(Wubi)
     * 
     * @exception
     * @since 1.0.0
     */
    public PageData findOperatorByOperatorName(PageData pageData) throws Exception {
        return (PageData) dao.findForObject("NewUserMapper.findOperatorByOperatorName", pageData);
    }

    /**
     * 换皮肤
     * setSkin(这里用一句话描述这个方法的作用)
     * (这里描述这个方法适用条件 – 可选)
     * 标记：@param pageData
     * 标记：@throws Exception
     * 返回值：void
     * 作者：吴比(Wubi)
     * 
     * @exception
     * @since 1.0.0
     */
    public void setSkin(PageData pageData) throws Exception {
        dao.update("NewUserMapper.setSkin", pageData);
    }
    
    /**
     * 
     * getOperatorInfoByOrganId(这里用一句话描述这个方法的作用)
     * (这里描述这个方法适用条件 – 可选)
     * 标记：@param pageData
     * 标记：@return
     * 标记：@throws Exception 
     * 返回值：PageData
     * 作者：吴比(Wubi)
     * @exception 
     * @since  1.0.0
     */
    public PageData getOperatorInfoByOrganId(PageData pageData) throws Exception {
        return (PageData) dao.findForObject("NewUserMapper.getOperatorInfoByOrganId", pageData);
    }
}
